iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 20
1
自我挑戰組

類神經網路搭配啟發式演算法於時間序列之應用系列 第 20

DAY 20 - 第二部分總結與延伸思考

  • 分享至 

  • xImage
  •  

第二部分是我開始沒有太多時間細打的部分,不過我還是想挑戰看看三十天發文!今天 DAY 20 我會分享一些比較進階的概念,關於啟發式演算法在類神經網路上的應用中,啟發式演算法需要注意什麼事情,在此不會講太多,主要還是圍繞幾個基本觀念在分享。

塊狀搜尋

啟發式演算法在做權重搜索的時候,務必要記得用如同塊狀的搜尋,而不要用一點一點去刺探,原因就是我們會假設我們的目標函數仍然存在一點局部凸性,如果你的參數空間連局部凸性都難以維持,如同像走在陡峭尖刺的地形上,那無論用什麼方法通常都沒辦法找到最佳解,我們期望找到的是一組參數在一個區域內表現皆不錯,然而這是粒子群演算法比較難給予的,除非你讓你的粒子非常多個。

什麼是塊狀搜尋呢?就是你在參數空間中搜索是有一個緩慢的方向,大家朝這個方向去搜尋,就像是一個拖把緩慢拖過一個區域一樣,而不是像派斥侯放射狀去搜尋參數,因為如果你塊狀去搜尋參數,可以同時幫你檢驗凸性,如果凸性不存在,那麼你的最佳解會不斷頻繁切換,不斷被取代,直到他落到某個奇異點,難以再被其他參數取代。

怎樣算尖點?怎樣算是一個合理的最佳解?這個問題比較複雜,要看你的問題還有你設定的參數空間而定,我知道講這個很廢話,但事實是這樣,如果你想要針對你的問題去一步步解決,我給你的最簡單方法就是先讓參數空間的維度盡量小,然後讓參數對於結果的影響先控制住不用太大。

舉例來說,類神經網路的最後一層的權重,是控制最後輸出值要去和標籤值匹配的關鍵,如果你讓那層權重採取梯度下降、批優化等方法,那你前面幾層的權重負擔就比較小,這就是一種控制的方法。或是說你的目標函數盡量先簡單一些,不要因為參數做一點簡單調整就會影響很大,例如先用簡單的 MSE ,至少最後一層輸出層可以控制。

RNN 或 CNN ,或是時下最夯的誤差網路、增量學習可以使用嗎?

我個人認為 RNN 可以,CNN 我不建議在時間序列上這樣用,原因是 CNN 的核心概念是在鄰近區域中權重共享,但是這個鄰近區域的大小很難真實反映時間序列的潛在相關性,如果你有搭建過基礎的時間序列模型應該可以感覺到,舉例來說基本的 ARMA 模型,你很難從局部一小塊觀察出大樣本的一個 lag, lead 之間的關係。

誤差網路和增量學習可以,但是我建議是在資料預處理的部份得採用關注機制(Attention mechanism)我知道在 RNN與 CNN 中已經很經常這樣使用,但是我認為如果你處理時間序列資料,各種 NN 都會有不錯的結果,這是我一點經驗,這個方法我實務中現在仍然在使用,但是比較複雜一點,你可以先從簡單的開始,如果你在建構一個誤差網路或是增量學習模型,千萬別忘記這個方法。

關注機制唯一要注意的就是你的程式碼能否立即支援,你需要多留意如果你要採用的話,因為他的處理方式不太像一般的資料預處理,可能在你或公司中的一個標準流程中要另外提 feature 去開發。

我們即將進入到第三部分,希望第二部分的一些廢話能對你有幫助。


上一篇
DAY 19 - 動態類神經網路
下一篇
DAY 21 - 訓練與測試樣本的選擇
系列文
類神經網路搭配啟發式演算法於時間序列之應用27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
海綿寶寶
iT邦大神 1 級 ‧ 2017-01-04 23:22:28

請教一下
先進對近幾日圍棋程式AlphaGO橫掃中日韓圍棋高手的看法
/images/emoticon/emoticon33.gif

我要留言

立即登入留言